Design & automation of a small-scale towing tank for flow visualization

Graphical abstract


Hardware in context
Many universities and research labs that engage in fluid mechanics teaching or research utilize wind tunnels and/or towing tanks as their foundational experimental platforms.These have been implemented at various institutions such as [1,2].These facilities are used for conducting aerodynamic and hydrodynamic experimentation, analyzing fluid flow phenomena, observing the behavior of fluids around bodies and more.A standard wind tunnel is a facility in which airflow is generated around a stationary object, such as an aircraft wing or model vehicle, enabling the measurement of drag, lift, and other aerodynamic forces.A standard towing tank is one in which test objects are towed through an otherwise stationary tank of water.Due to the relative velocity theory, a specimen fastened to the carriage and towed at preset speeds in an otherwise motionless fluid is equivalent to a stationary object experiencing flow over it at the same velocity as the towing speed.Hence the standard towing tank setup enables a controlled investigation of flow behavior around various objects such as ship hulls, submarines, and marine robots, as well as measurement of respective forces they experience [3].The two facilities can, to an extent, be used to achieve similar outcomes.Flow visualization capabilities can be integrated into any of these facilities due to the accurate velocity and acceleration profiles they provide.
A diverse set of applications have benefited from experimental studies in a towing tank facility.For example, experiments were conducted on a model Mars robot to study the fluid interference caused by a mast holding one of its mounted cameras [4].Dye was introduced to the flow as the model was towed at a specific velocity within the tank, enabling visualization of the flow features around the specimen.The capabilities of autonomous underwater vehicle (AUV)s have been tested in these facilities, such as determining their "visual recognition control" [5].The oil and gas industry has been able to re-design underwater piping systems and offshore structures that were adversely affected by vortex-induced vibrations (VIV).Different model pipes were tested by towing them at specific speeds and analyzing the flow patterns around them to ascertain the severity of the VIV that developed [6].These few examples highlight the extensive use of towing tanks in different institutions and sectors.
Towing tanks are particularly uncommon in many universities in the global south, including the one where the authors are located.This is due to various factors, including the high cost of their construction and upkeep, the size of the complete setup, the logistical difficulties involved in transporting the specialized equipment, and the need for available expertise to run and maintain such facilities.Documentation exists for a few towing tanks that have been developed in lower to middle-income countries, such as [7].Many institutions in these contexts, however, revert to "virtual" towing tanks, relying on computational approaches to predict the expected performance of the test objects [8].Once again, high cost tends to be limiting factor as well as the space required, since a typical towing tank can span several meters, posing a challenge for such institutions who may usually have limited space for a relatively large student population.
Although the need for a small-scale towing tank that addresses the issues highlighted earlier is evident, few efforts at the small-scale have been documented.Even a tank on the order of tens of meters long would traditionally be called "small".Nonetheless tanks one order of magnitude smaller have been used, especially in university settings.One example is a tank used at MIT for experimental fluid [9].The 2.4-meter-long tank confined to a space envelope of less than 5 m cubed, is being used extensively for various experiments.This demonstrates the feasibility of utilizing small-scale tanks for research in fluid dynamics and still highlights a gap in creating benchtop-sized platforms.
In this work, we demonstrate a low-cost, small-scale, Computerized Numerical Control (CNC)-based towing tank designed for fluid mechanics experimentation.This hardware serves as a versatile platform for conducting diverse teaching and research endeavors within fluid mechanics.The mechanical structure primarily consists of plexiglass, 2020 aluminum extrudes, and 3D-printed parts.The electronics are centered around an Arduino microcontroller and basic electronic components such as optocouplers and DC-DC buck converters.The setup offers a scalable and cost-effective alternative to expensive proprietary systems, fostering broader access to fluid flow experimentation, particularly in the global south.

Hardware description
The small-scale (mini) towing tank, which can be seen in the figure below, is majorly composed of the tank, camera, gantry, carriage, and control box.The tank is fabricated from plexiglass and filled with water.The control box houses all the vital electronics for running the system.The carriage is programmed to move across the gantry at a user-defined speed.A test object should be mounted to the carriage such that it hangs vertically in the water.Two stepper motors provide motion in the X (in-line) and Y (cross-flow) axes, controlled by an Arduino UNO microcontroller running GRBL software.The system is operated using either open-source G-code software like Universal G-code Sender (UGS) or a custom software programmed in MATLAB.Finally, there is a mounting point for flow visualization experiments using a camera.
Compared to pre-existing methods, this hardware offers several advantages: 1. Its cost is significantly lower than proprietary towing tanks, making it more accessible to institutions with limited material budgets.The use of off-the-shelf components and open-source software contributes to cost reduction.2. Its modular design allows for easy detachment and mobility, enabling researchers to relocate or transport the equipment conveniently.3. The customization prospect of the hardware encourages further exploration and development in specific areas of interest, as local students/researchers can modify and adapt the setup for different experiments or designs.4. Users requiring larger-scale experiments can easily modify the design by using longer aluminum extrusions and larger tanks.
The key limitations associated with utilizing a smaller-scale tank, such as the one described here, are in the smaller size of test specimen that can be used and the lower velocity range that can be employed.This therefore limits the operating Reynolds number regime to relatively smaller values.In order to reduce potential wall effects, the authors recommend that the width of the test specimen not exceed one-fifth the width of the tank, which in this system equals 32 mm.In order to ensure that the test specimen reaches steady state conditions for a sufficient portion of the test run, the velocity range of this system should not exceed 100 mm/s.Hence this system is limited to operating at a maximum Reynolds number of order of magnitude 10^3.The dimensions of the towing tank were predominantly dictated by the availability of 1-meter aluminum extrusions, which are cost-effective and readily accessible in the authors' geographical location.This choice was intended to simplify the construction process, and thereby making it more feasible for users or institutions with limited resources.
This mini towing tank provides a cost-effective, customizable, and mobile solution for fluid mechanics experiments.Its affordability, ease of use, and adaptability make it an attractive alternative to existing systems, providing a feasible platform for local students and researchers to engage with fluid mechanics experimentally.

3D printed parts
All the component files for the mini towing tank were designed using SolidWorks 2022.The files for the laser-cut parts were saved in the Drawing Exchange Format (DEF), while the sections requiring 3D printing were saved in the Surface Tessellation Language (STL) format (DXF).The 3D printing was performed using a Creality Ender 3 Pro 3D printer equipped with a 0.4 mm nozzle and Polylactic Acid (PLA) filament.A 40 % infill density was consistently used for each 3D print, ensuring a balance between structural strength and material efficiency.

Laser cut partsThe parameters the laser cutter was set to cut or engrave are highlighted below
Laser cutter brand: Boss Laser.Laser wattage: 70 W. Laser cutting parameter for 5 mm plexiglass: 80 % power, 10 mm/s speed.Laser cutting parameter for 10 mm plexiglass: 80 % power, 5 mm/s speed.Engraving parameter: 25 % power, 350 mm/s speed.Interval/scan gap: 0.065 mm.

Electronics
Fig. 1 below presents the schematic diagram for the complete setup of the mini-towing tank.The system has a total power requirement of 72 W, with a voltage of 24 V and a current of 3 A. The electronic circuit comprises various components, including DM556 stepper motor drivers, an Arduino UNO, an emergency stop button, optocouplers, fans, and limit switches.
It is worth noting that the use of barrel jack is optional.One might choose to directly connect the cables from the stepper motors and limit switch to the control box, bypassing the need for a barrel jack interface.While this approach is simpler, it compromises the modularity of the overall system.Additionally, the section highlighted in blue on the schematic diagram represents optional connections (extra 12 V ports), which allow users to incorporate other functionalities according to their specific design requirements or preferences.This adaptability enables customization and expansion of the mini towing tank system to suit different research or experimentation needs.

Software
The mini towing tank is controlled using Universal G-code Sender, an open-source software.The Arduino UNO microcontroller is loaded with GRBL firmware to enable communication between the software and the stepper motors.This firmware serves as an interpreter for the G-code commands generated by the Universal G-code Sender, allowing the microcontroller to control and drive the stepper motors effectively.
With the combination of the Universal G-code Sender software and the GRBL firmware, precise movements of the stepper motors are achieved, facilitating the towing of the specimen at specific speeds within the tank.Table 1 provides a list of the files needed to create the open-source device.

SolidWorks folder
This folder contains 3D design files of the entire setup modelled in SolidWorks 2022.Within it are two sub folders -Control box and Gantry-Carriage.

STL folder
This folder contains the files that should be printed using a 3D printer.These parts must be printed individually to ensure finer prints.

DXF folder.
This folder contains files specifically designed for laser cutting using the laser cutter.Depending on the working area of the laser cutter available, it is possible to merge and cut all the files in the folder in a single run.

GRBL firmware
This zipped folder contains an Arduino file (grbl.ino)meant to be uploaded on the Arduino microcontroller to control the CNC machine.

Table 1
List of design files.

UGS software folder
This folder contains files within which the main software for operating the CNC machine can be found.The main file is within the bin folder as ugsplatform for 32-bit machines and ugsplatform64 for 64-bit machines.

Electronic schematic
This folder contains the schematics for both circuit designsthe force measurement system and the control box.

BOM
This document includes a list of all the materials and components utilized in the system fabrication and the total cost involved.

Specimen samples
This folder contains the CAD and STL files of the test specimen samples that should be printed using a 3D printer.

Guide
This folder contains two portable document format (pdf) filesone instructional guide to wire the system and the other on how to use PIVLab software for flow visualization, as needed.

Bill of materials summary
A link to the BOM can be found in the design files table.

Build instructions
Given the relative complexity of this system, the build manual is organized into seven categories to provide detailed instructions for each component.These include gantry, carriage, gantry-carriage assembly, control box, tank, external wiring, and firmware configuration.
Prior to the commencement of the build, this quantity of parts should be readily available to make the process seamless.Number of 3D printed parts: 37. Number of Laser cut parts (5 mm plexiglass): 22. Number of Laser cut parts (10 mm plexiglass): 4. NB: If 10 mm plexiglass can't be obtained, laser cut two pieces of 5 mm plexiglass and glue together for the respective part.
Table 2 shows the list of complete parts with quantities in bracket that ought to be 3D printed and laser cut before the build process commences.It is also helpful to group the parts to make the entire build process easier.

Gantry
a. Have these laser cut parts: drag chain platforms (DragChainSupport2 and DragChainSupport2.0).b.Have these 3D printed parts: (motor bracket), pulley stands (pulleyStand), and x-axis limit switch holder (XlimitSwitchHolder). c.Cut two 1000 mm and two 200 mm 2020 aluminum extrusions and arrange them as shown in Fig. 2A.d.Screw each corner in place using an L bracket and a nut.

Table 2
Parts to be 3D printed and laser cut.
e. Place one 210 mm aluminum extrusion vertically on each corner and fix them in place using an L bracket (Fig. 2B).f.Repeat steps a and b, and join it to the previous setup using L brackets (Fig. 2C).g.Place the drag chain platforms beneath the gantry's top member and fasten them using 5 mm threaded screws and nuts (Fig. 2D).h.Place a stepper motor into the motor bracket (motor bracket), screw it in place using four M3 x 10 screws, and attach a 5 mm bore pulley to the motor's shaft (Fig. 3A).i. Position the stepper motor assembly at one corner of the gantry with the shaft facing outward (Fig. 3B) and secure it in place using two 5 mm threaded bolts and nuts.j.Insert a 20 x 8 mm bearing into each pulley stand.k.Place an 8 mm bore 20 T pulley on a 200 x 8 mm shaft.Do not tighten it yet.l.Insert the shaft through the bearings and secure it in place using an Allen key (Fig. 4A).m.Slide the 8 mm bore 20 T pulley close to the left pulley stand and tighten it using an Allen key.n.Position this new assembly on the opposite side of the gantry and fasten it in place using 5 mm threaded bolts and nuts (Fig. 4B).o.Insert a wired limit switch into the X-axis limit switch holder.NB: Instructions for wiring the limit switches can be found in section 5.6.p. Position the limit switch assembly on the gantry, 100 mm from the X-axis stepper motor.Secure it in place using a 5 mm threaded bolt and nut (Fig. 5).

Carriage
This section is sub-divided into five parts -Carriage holder 1.0, Carriage holder 2.0, Flow-visualization mount, V wheels assembly, and carriage assembly.d.Attach a motor coupler to the shaft of the stepper motor and tighten using an Allen key (Fig. 6B).e. Insert the 190 mm lead screw into motor coupler and secure it in place using Allen keys (Fig. 6C).The lead screw will not come at this given length, so you have to size it with a hacksaw.f.Insert the two 200 mm 20x20 aluminum extrusions into (CarriageMotorMount) as shown in Fig. 6D.g.Fix (belt_Locker) onto the extrusions but close to (CarriageMotorMount) and hold in place using M5 x 10 mm screws (Fig. 6E).h.Insert a 3 mm nut in each slot of (belt_Locker) as shown in Fig. 6E, place (BeltTopLock) on top, and screw in place using M3 x 16 mm screw (Fig. 6F).i. Insert a limit switch into (YLimitSwitchHolder).Make sure it is wired before inserting into the holder.Refer to guide document on how to wire the limit switch.j.Place the limit switch assembly on (ylimplatform) and screw in placing using two M3 x 16 screws and nuts (Fig. 6G).k.Place the assembly made on (CarriageMotorMount) as shown in Fig. 6H.Do not screw it in place for now as it should be a tight fit.

Carriage holder 2.0
a. Have these 3D printed parts: (CarriageEndMount), sliders (slider), carriage platform (CarriagePlatform).b.Have this laser cut part: drag chain mount (dragChain mount).c.Insert two M3 x 20 mm screws in each of the four sliders (Fig. 7A).d.Place the carriage platform on the sliders and ensure that the screws pass through it.Fasten it in place using M3 nuts (Fig. 7B).e. Insert a flange nut into the carriage platform and secure it using four M3 x 16 mm screws and nuts (Fig. 7C).f.Pass the sliders through the aluminum extrudes (Fig. 8).g.Insert a 20 x 8 mm bearing into the 3D printed part (CarriageEndMount) (Fig. 9A).h.Insert the assembled part at the open end of the completed part from Carriage holder 1.0 (Fig. 9B).i. Place the drag chain mount on the (CarriageMotorMount) and secure it in place using M5 x 10 mm bolt and nut (Fig. 9C).
NB: Do not fully tighten the bolts into the nuts.
i. Insert two (box_linker) parts into (Mount_box2).NB: The top part of (Mount_box2) is a through-hole, and the lower part isn't.Also, insert an M5 x 10 mm bolt in the upper (box_linker) as indicated in Fig. 11A.This bolt screws into the specimen.j.Slide (Mount_box1) onto the lower (box_linker) and fasten it in place using an M5 bolt (Fig. 11B).k.Pass an M8 x 60 mm bolt through (attachment_holder_camera) and screw it onto the M8 nut on (Mount_box1) as shown in Fig. 11C.Fig. 7. Assembly process for the carriage platform.

V wheels assembly.
a. Have these laser cut pieces: V wheel platform (V-wheel platform) and spacers (Carriage_platform).   b.Take one part of the V wheel platform and insert four V wheels (Fig. 12B) into the holes.Fasten them in place using four M5 x 30 mm hex bolts and nuts.
c. Apply a weak-based glue to the surface of the spacer.
d. Stick the spacer to the V wheel platform using glue and ensure that the part is fixed at the central part of the platform (Fig. 12C).
e. Create another replica of this unit to have a total of two parts (Fig. 12D).

Carriage assembly.
a. Apply glue on the surface of both V wheel assemblies and attach them beneath the carriage holders (CarriageEndMount and CarriageMotorMount), following the indications shown in Fig. 13.

Gantry-carriage assembly
a. Remove the pulley assembly from the gantry by unscrewing the bolts.b.Slide the carriage through the top side of the gantry (Fig. 14A).c.Reattach the pulley assembly to the gantry and secure it using bolts (Fig. 14B).d.Remove the two extreme nuts on the carriage platform facing the X-axis stepper motor.Position the flow visualization mount on it as indicated in Fig. 14C.Reinstall the nuts and tighten them securely.e. Connect a 1-meter drag chain to the point indicated on the drag chain mount and secure it in place using M3 x 10 mm screws and nuts (Fig. 15).f.Cut approximately 1800 mm length of the timing belt.g.Unscrew (BeltTopLock) from (belt_Locker) (Fig. 16A).h.Create two holes, 30 mm apart, at both ends of the timing belt (Fig. 16B).i. Pass the screws from the (BeltTopLock) through the holes in the belt (Fig. 16C) and fasten it on the right side of the (belt_Locker).j.Pass the timing belt over the pulley on the X-axis stepper motor (Fig. 17A), through the channels beneath the right (belt_Locker) (Fig. 17B) and left (belt_locker) (Fig. 17C).k.Continue to pass the timing belt around the pulley on the pulley assembly (Fig. 18A) and screw the end of it on the left (belt_locker) (Fig. 18B).

Fig. 11.
Assembling and inserting the specimen holder.

Control box
This section is sub-divided into three parts -Frame fabrication, Component arrangement, and Control box assembly.

Component arrangement
a. Have this 3D printed part: (barrelJack holder).b.Take (Port_face) and insert switches into each switch slot.Five switches should be inserted for this face (Fig. 20A).c.Insert one barrel jack into the (barreljack holder) (Fig. 20B).Create fourteen replicas of this barrel jack and (barrelJack holder) assembly.Only eleven pieces of this assembly will be used on this face.Refer to the Wiring instructional guide for procedure on how to wire the barrel jack.Also make sure to wire the barrel jack before inserting it into its holder.a. Fig. 21 illustrates the designations for the ports on the port face.Please note that the unlabeled ports are optional and can be utilized to accommodate other functionalities based on the user's preferences.d.Take the (fan_face) and attach the Small fan, Big fan, two switches, and one barrel jack assembly to it using M3x16 mm screws (Fig. 22A).e.Take (Top_face) and insert the Emergency Stop button.f.Take (back_face) and insert two-barrel jack assemblies with M3x16 mm screws and one switch (Fig. 22B).Please note that the components attached on this face are optional.g.Place two stepper motor drivers (Lead shine DM556), two buck converters (DC-DC Buck converter), and four spacers at the specified locations on the (Frame_base) part (Fig. 23).h.Arrange the Arduino uno (ARDUINO UNO R3), two [LM7812-Transistor], two [L7805-transistor], a 5 mm LED, and two optocouplers on a perf board (Perforated_board) (Fig. 24A).i. Follow the wiring instructional guide provided in the Electronic Schematic folder to connect the various electronic components together using wires and solder.Kindly note that some connections are optional and are indicated in the guide.j.Use spacers to elevate the perforated board and secure it on the specified holes indicated in Fig. 24B.

Control box assembly
a. Position the remaining faces on their respective sides of the control box frame (Fig. 25) and secure them in place using M5 x 10 mm bolts and nuts.c.Seal the inner joints of the tank using silicone glue and leave it to dry for 48 h.5.6.External wiring 5.6.1.X-axis limit switch a.Take the X-axis limit switch holder (XLimitSwitchHolder). b.Solder a wire, approximately 300 mm in length, to the Common (C) and Normally Open (NO) terminals on the limit switch, respectively.c.Insert the limit switch into the X-axis limit switch holder.d.Connect the other ends of the wire to a barrel jack connector (Fig. 27).e. Connect the barrel jack connector to the control box on the port face designated for the X-axis limit switch.

Y-axis limit switch
a. Take the Y-axis limit switch holder (YLimitSwitchHolder). b.Solder a wire, approximately 1300 mm in length, to the Common (C) and Normally Open (NO) terminals on the limit switch, respectively.c.Insert the limit switch into the Y-axis limit switch holder.d.Connect the other ends of the wires to a barrel jack connector, as shown in Fig. 27B.e. Pass the cables through the drag chain.f.Connect the barrel jack connector to the control box on the port face designated for the Y-axis limit switch.

X-axis stepper motor wiring
a. Insert a 300 mm stepper motor cable into the X-axis stepper motor (Fig. 28A).b.Strip the cables and solder the A+1 (red wire) and A-1 (blue wire) to one barrel jack connector, and the B+1 (green wire) and B-1 (black wire) to a separate barrel jack connector (Fig. 28B).c.Connect both barrel jack connectors to the control box on the port face designated for the X-axis stepper motor.c.Locate GRBL folder and copy it.d.Go to the section on your PC where Arduino was installed.e. Open the "Libraries" folder within the Arduino folder.f.Paste the GRBL folder into the "Libraries" folder and close the window.g.Launch the Arduino IDE and navigate to "File," then "Examples," and select "grblUpload" from the list (Fig. 29A).Ensure that you do not edit the file.h.Connect the Arduino to your PC using a USB B cable.i.In the Arduino IDE, navigate to "Tools," then "Port," and select the appropriate port number from the list (Fig. 29B).j.Click the upload button in the Arduino IDE to send the code into the Arduino.This will install the GRBL firmware on Arduino.

UGS configuration
a. Download Universal G-code Sender from the design file folder.b.After downloading, unzip the file and navigate to the bin folder.c.In the bin folder, open either "ugsplatform" for 32-bit machines or "ugsplatform64″ for 64-bit machines.d.Inside Universal G-code Sender, select the appropriate COM port number and set your baud rate to 115,200 (Fig. 30).This configuration ensures the right communication with the Arduino with GRBL firmware installed.

Operation instructions
6.1.Powering system a.Connect a 24 V 3A power source to the Power inlet port labeled "Supply port" on the Control Box. b.Turn on the unit by pressing the "Main switch" This action should turn on the small fan and light up the onboard red LED (Fig. 31).c.Turn on the stepper drivers by pressing the "Motor" switch.This should turn on the big fan and power the stepper motor drivers.
The hole marked as "1″ in Fig. 32 is the entry port for the USB cable that connects to the Arduino microcontroller.

Preparation of tank
a. Fill the tank with water until it reaches about 4/5 of its total volume (Fig. 33A).b.Sprinkle nail glitter over the water's surface to serve as the tracer particles which will enable the visualization of flow patterns (Fig. 33B).

Setting up and calibrating the system
This process is performed during the initial setup of the system.
a. Turn on the system.b.Open Universal G-code Sender (UGS) and select the appropriate COM port number and baud rate.c.On the toolbar, click "Machine," then select "Setup wizard."A small dialogue box (Fig. 34A) will appear.d.Click "Next" until the "Motor wiring" screen appears (Fig. 34B).
e. On the "Motor wiring" screen, click on "X-", "X+", "Y-", or "Y+" to test if the motors move in the correct direction.If any motor moves in the wrong direction, check the box next to the respective button to change the direction.Click "Next" to proceed to the "Step calibration" section.f.Mark an origin point on the carriage using a pencil on your CNC setup.g.On the "Step Calibration" window (Fig. 35A), click on "X+" to increase the value highlighted as "1″ and move the carriage from 0 mm to 10 mm.This should jog the carriage over a specified distance.Mark the new position and record the distance covered.h.Record this value in the edit field marked as "2″.i. Click on the "Update" button (highlighted as "3″) to store the new value into the firmware.j.Repeat the process for the Y-axis.Click "Next" to proceed to the "Limit switches" window (Fig. 35B).k.Check the "Enable limit switches" box to activate the limit switches.l.Press the X-axis limit switch for at least two seconds.This should change the appearance of the "X" icon from green to red.m.Repeat the process for the Y-axis limit switch.Click "Next" to proceed to the "Homing" window (Fig. 36).NB: If the icon doesn't change appearance after triggering the limit switch, check the wiring of the limit switch.Only proceed if both limit switches work properly.n.Click on "Try Homing" to begin the Homing cycle.This should move both axes of the CNC setup until they reach their origin position close to the limit switches.Click on "Abort" if there isn't a successful homing operation.o.Click on "Next" to proceed to the "Soft limits" window (Fig. 37).p. Check the "Enable soft limit" box.Change the parameters under "Update settings" to set your maximum travel distance for the X and Y axes.This will prevent the CNC setup from moving beyond the specified limits during operation.q.Click on "Finish".

Mounting specimen
a. 3D print any of the test specimens from the Specimen samples folder.For example, "Cylinder".b.Place a 5 mm nut in the hole marked in Fig. 38 and secure it in place with glue.c.Attach the specimen to the CNC setup by screwing the M5 x 10 mm bolt on the upper (box_linker) into the M5 nut on the specimen (Fig. 39).This will securely hold the sample for testing or observation during towing tank experiments.

Mounting camera
a. Slide the camera (GoPro Hero 8) through the (CameraMount) as indicated in Fig. 40A.b.Tilt the camera until the lens is facing downwards.c.Lock the camera in place using the M5 x 10 mm bolt.
Fig. 40B provides a side view of the setup, showing the securely mounted camera and specimen.

Jog/Move system
The System can be jogged using either of two methods: 6.6.1.Jog Controller Method a.On the main screen of UGS, navigate to the "Jog Controller" tab (Fig. 41).b.Edit the "Step size XY" and/or "Feed rate" parameters to suit your specifications.c.Click "X-", "X+", "Y-", or "Y+" to move axis with specified parameters.

Command line Method
a. Using the syntax highlighted before, jog the carriage at the specified speed and distance by entering the command in the command line (Fig. 42).G21G91X?F? -Jogging only X axis.Replace "?" with set distance and speed respectively.G21G91Y?F? − Jogging only X axis.Replace first and second "?" with set distance and speed respectively.G21G91X?Y?F? − Jogging both axis at the same time.Replace first, second, and third "?" with set end distances for X axis, Y axis, and speed.
For example:

G21G91X20F200
This will jog the X axis by 20 mm at a speed of 200 mm/s.

Emergency
If the system moves beyond its specified boundaries or fails to accept a jog command, you can use any of these outlined points to halt the process:

Axes' motion accuracy test
To validate that both axes were properly calibrated, the system was jogged by 100 mm from its origin in both axes and the percent difference from the actual was found.

X axis position accuracy test
a. A point on the gantry close to the carriage was marked -pt1 (Fig. 44A).b.The X axis was jogged by 100 mm in the Universal G-code Sender (UGS) software.c.The final position was marked (pt2) after the jog was completed.
Here are the results: Actual distance: 100 mm.Measured distance: 101 mm.

Y axis position accuracy test
An accuracy test similar to that in 7.1.1 was conducted on this axis but with a set distance of 40 mm, since the available span of motion is smaller in this direction.An initial point pt1, was marked, carriage was jogged by 40 mm, and the final point marked as pt2 as shown in Fig. 44B With this level of accuracy, this CNC system can effectively execute motion profiles that it is programmed to perform.

Axes' velocity test
To validate the velocity of both axes, a simple experiment was conducted.

X axis velocity test
Three pointers were marked on the X axis along the gantry.The first pointer was 100 mm from the carriage when homed, the second was 200 mm from the first pointer, and the third was also 200 mm from the second pointer.For the first run, the time taken for the carriage to move from the first pointer to the second was recorded.For the second run, the time taken for the carriage to move from the first pointer to the third pointer was recorded.Each run was performed twice and averaged.The results are shown in Table 3.
Test speed = 480mm/min (.8mm/s) From Table 3 above, the X-axis velocity recorded is precise with an accuracy of 99.87 %.

Y axis velocity test
A similar procedure was conducted for the Y-axis along the carriage but using only two pointers due to its length.The first pointer was 20 mm from the carriage platform when homed.The second pointer was 50 mm from the first pointer.The time taken for the carriage platform to move from the first pointer to the second was recorded.This was performed twice and averaged.The results are shown in Table 4.
Test speed = 300mm/min (.5mm/s) From Table 4 above, the Y-axis velocity has an accuracy of 98 %.

Flow visualization tests
The next step was to test the system's ability to visualize relevant flow features, such as wakes generated behind a body being towed at specific speeds.
Two test objects were selected for use in this testing.Both are bluff bodiesa circular cylinder and cuboid of dimensions, 25 mm in diameter and 25 mm x 10 mm respectively.Each was tested at three different Reynolds numbers, which was achieved by varying the towing speed.Images captured from the flow around the cylinder and cuboid were analyzed in MATLAB (PIVLab software) to generate the velocity fields.This is demonstrated in two sets of experiments, one set for each of the test objects.Key flow features were sought out in the results, such as identifying the stagnation point and velocity deficit in the wake.
The following are a series of images showing first the raw image captured by the camera, in which one sees the glitter on the surface of the water and the top view of the test specimen and mount.Second is the processed image generated by the PIV software, in which one sees the velocity vectors overlaid on the image.Third is the final processed image in which one sees the velocity values overlaid in contour form on top of the vector field.In all cases, the flow direction is from right to left.
Shown in Fig. 45B and C are processed images of a cylinder (Re = 319) towed within the tank.Fig. 45A is a raw image captured by the camera.Shown in Fig. 45E and F below are processed images of a cylinder (Re = 955) towed within the tank.Fig. 45D is a raw  image captured by the camera.Shown in Fig. 45H and I below are processed images of a cylinder (Re = 1,900) towed within the tank.Fig. 45G is a raw image captured by the camera.These results reveal that the system is able to capture expected features in the various flow fields.The stagnation point is visible in blue on the right side of the cylinder.The velocity deficit (in blue) in the wake grows as the Reynolds number increases.The flow around the cylinder remains relatively undisturbed at slow speeds, showing a remarkably smooth profile (Fig. 45C) with no noticeable vortices generated.As the Reynolds number increases slightly, a transition subtly begins taking place as small vortices emerge in the cylinder's wake (Fig. 45F).The flow continues to evolve as the Reynolds number increases further, with the generation of even more pronounced vortices in the wake generated (Fig. 45I).This progression agrees with the long-established characteristics of flow around a circular cylinder starting as a regime of unseparated flow at very low Reynolds numbers, then at a slightly higher Reynolds number transitioning to one that develops a pair of fixed vortices in the wake, before transitioning at a higher Reynolds number to one that generates a von Kármán vortex wake which is made of vortices being deposited in the wake in an alternating manner.
The second set of results were generated from towing the cuboid down the tank.The towing speed was held constant, but the orientation of the object was rotated by 90 degrees, in effect causing the same object to change from a bluff body to a streamlined one.The Reynolds number was calculated based on the cross-flow dimension of the object.
Shown in Fig. 46B and Fig. 46C below are processed images of the specimen (Re = 955) towed within the tank.Fig. 46A is a raw image captured by the camera.Shown in Fig. 46E and F below are processed images of a cuboid (Re = 382) towed within the tank.Fig. 46A is a raw image captured by the camera.
The experimental results from the cuboid being towed at a constant speed demonstrate the significant influence of the area facing the flow on what is developed.When the specimen was oriented such that its longer side faced the direction of the moving stream (as shown in Fig. 46A), it generated a larger wake with noticeable vortices trailing behind it.However, when the orientation was changed, causing the shorter side to face the oncoming stream (Fig. 46D), it produced a smaller wake with no visible vortices.This illustrates that the size and features of the wakes generated by a bluff body in motion through a fluid can significantly change when the object's characteristic length and orientation are altered while the speed remains constant.
Understanding these concepts plays a significant role in fluid dynamics and has implications for various engineering applications.Researchers and students often study vortices and wakes to gain insights into flow behavior, lift and drag forces, and the interactions between bodies and the surrounding fluid.Also, analyzing these phenomena in towing tanks can aid in improving the designs of hydrodynamic vessels such as submarines.

System specifications
Highlighted below are the specifications of the unit:

Fig. 4 .
Fig. 4. Mounting the pulley stands at the end of the gantry.

Fig. 5 .Fig. 6 .
Fig. 5. Mounting the X axis limit switch about 100 mm away from the X-axis stepper motor.

Fig. 8 .
Fig. 8. Mounting the carriage platform on the carriage.

5. 4 . 1 .
Frame fabrication a. Have these laser cut pieces: back_face, fan_face, Frame_base, Front_face, Port_face, and Top_face.b.Take two 130 mm, 230 mm, and 190 mm each of 2020 aluminum extrusions and arrange them as shown in Fig. 19A.Secure each joint with an L bracket.c.Place Frame_base and Front_face at the bottom on the face of the frame built as shown in Fig. 19B and fasten them with 5 mm bolts and nuts.

Fig. 15 .
Fig. 15.Mounting the drag chain on the carriage.

Fig. 22 .
Fig. 22. Fan face of the control box assembly.

Fig. 23 .
Fig. 23.Placement of motor drivers and buck converters on the frame base.

Fig. 24 .
Fig. 24.Placement of electronics on the perforated board.
a. Insert a 1200 mm stepper motor cable into the Y-axis stepper motor.b.Strip the cables and solder the A+2 (red wire) and A-2 (blue wire) to a barrel jack connector, and the B+2 (green wire) and B-2 (black wire) to a separate barrel jack connector.c.Pass the cables through the drag chain.d.Connect both barrel jack connectors to the control box on the port face designated for the Y-axis stepper motor.5.7.Uploading firmware a. Download Arduino IDE from https://www.arduino.cc/en/software.b.Download GRBL from the design file folder and unzip it.

Fig. 28 .
Fig. 28.Wiring of the X-axis stepper motor.A-stepper cable inserted in stepper motor, Bends of stepper cable connected to barrel jack connectors.

Fig. 31 .
Fig. 31.Onboard red LED indicator in the control box.(For interpretation of the references to color in this figure legend, the reader is referred to the web version of this article.)

Fig. 33 .
Fig. 33.Filling and seeding the tank with water and glitter.

Fig. 40 .
Fig. 40.Mounting the camera on the mount.

Fig. 42 .
Fig. 42.Jogging command to move X axis by 20 mm at a speed of 200 mm/s.

Fig. 45 .
Fig. 45.Raw and processed images of specimen towed at a Re of 319, 955, and 1,900.A-raw image of cylinder towed at Re of 319, B-mean velocity vector plot, C-color plot of specimen at Re of 319, D-raw image of cylinder towed at Re of 955, E-mean velocity vector plot, F-color plot of specimen at Re of 955, G-raw image of cylinder towed at Re of 1,900, H-mean velocity vector plot, I-color map of specimen at Re of 1,900.

Fig. 46 .
Fig. 46.Raw and processed images of the specimen towed at a Re of 955 and 382.A-raw image of cuboid towed at Re of 955, B-mean velocity vector plot, C-color plot of specimen at Re of 955, D-raw image of cuboid towed at Re of 382, E-mean velocity vector plot, F-color plot of specimen at Re of 382.

Table 3
X axis velocity results.

Table 4 Y
-axis velocity test results.